/**
 * 
 */
package com.dingding.service.activity.core.dao;

import java.util.List;

import com.dingding.common.core.base.dao.IBaseDao;
import com.dingding.common.core.beans.ActivityRelevance;
import com.dingding.common.core.beans.UserCoupon;
import com.dingding.facde.activity.dto.ExpiredCouponDTO;
import com.dingding.facde.activity.dto.ShowUserCouponDTO;
import com.dingding.facde.activity.dto.ShowUserCouponListDTO;
import com.dingding.facde.activity.dto.UserCouponInfoDTO;

/**
 * @ClassName: IUserCouponDao
 * @Description: 用户优惠券dao
 * @author zhouxuan
 * @date 2016年3月31日 上午11:40:32
*/

public interface IUserCouponDao extends IBaseDao<UserCoupon> {

	/**
	 * @Title: addCoupon
	 * @Description: 添加用户优惠券
	 * @param @param userCoupon
	 * @author zhouxuan
	 * @return boolean
	 */
	public boolean addCoupon(UserCoupon userCoupon);

	/**
	 * 
	 * @Title: getUserCouponList 
	 * @Description: 根据用户ID获取当前用户的所有优惠券 
	 * @param userId 用户优惠券ID
	 * @return List<ShowUserCouponDTO>  当前用户的优惠券集合
	 * @author CHEHAUNBO
	 * 
	 */
	public List<ShowUserCouponDTO> getUserCouponList(String userCouponId);
	
	
	/**
	 * 
	 * @Title: getUserCoupons 
	 * @Description: 根据用户ID获取当前用户的所有优惠券 
	 * @param userId 用户优惠券ID
	 * @return List<ShowUserCouponListDTO>  当前用户的优惠券集合
	 * @author CHEHAUNBO
	 * 
	 */
	public List<ShowUserCouponListDTO> getUserCoupons(String userCouponId);

	/**
	 * 
	 * @Title: getUserCouponInfo 
	 * @Description: 根据用户ID获取优惠券详细信息
	 * 主要包括：规则、有效期、金额
	 * @param userCouponId 用户优惠券ID
	 * @return UserCouponInfoDTO 用户详情
	 * @author CHEHAUNBO
	 * 
	 */
	public UserCouponInfoDTO getUserCouponInfo(String userCouponId);

	/**
	 * 
	 * @Title: activateCoupon 
	 * @Description: 激活优惠券
	 * @param userCouponId 用户优惠券主键ID
	 * @return boolean  true 激活成功  false 激活失败
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean activateCoupon(String userCouponId);

	/**
	 * @Title: useCoupon
	 * @Description: 使用优惠券(商家使用优惠券)
	 * @param couponId 优惠券id
	 * @author fengshuonan
	 * @return true 使用成功  false 使用失败
	 * @throws
	 */
	public boolean useCoupon(String couponId, String userId);

	/**
	 * 
	 * @Title: addUserCoupon 
	 * @Description: 添加用户优惠券
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean addUserCoupon(String userId);
	
	
	/**
	 * @Description: 激活所有未激活的手机号
	 * @param tellPhone 用户账号
	 * @author fengshuonan
	 */
	public boolean weChatActivationCoupon(String tellPhone);
	
	/**
	 * 
	 * @Title: addUserCoupon 
	 * @Description: 添加用户优惠券
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean addUserCouponInfo(String userId);

	/**
	 * @Title: addTwoCoupon 
	 * @Description: 兑换邀请码添加两张优惠券
	 * @param object 赠送的优惠券信息
	 * @author YHQ 
	 * @return boolean    返回类型
	 */
	public boolean addTwoCoupon(Object[] object,ActivityRelevance activityRelevance1,ActivityRelevance activityRelevance2,String userId);
	
	/**
	 * 
	 * @Title: useCouponByUser 
	 * @Description: 用户使用优惠券
	 * @param ucid 用户优惠券Id
	 * @param couponType 优惠券类型
	 * @author YHQ 
	 * @return boolean    返回类型
	 * 
	 */
	public boolean useCouponByUser(String ucid,Integer couponType);
	
	
	/**
	 * @Description: 添加现金优惠券
	 * @param loginId 用户登录id
	 * @param isActive 是否要激活（true要激活  ，false 不要激活）
	 * @author fengshuonan
	 * @return boolean 
	 */
	public boolean addMoneyCoupon(String loginId,boolean isActive);
	
	
	/**
	 * @Description: 添加洗车券和现金券
	 * @param userId 用户id
	 * @param isActive 是否激活（true要激活  ，false 不要激活）
	 * @author fengshuonan
	 * @return void
	 */
	public boolean addCarWashCouponAndMoneyCoupon(String userId,boolean isActive);
	
	/**
	 * 
	 * @Title: getExpiredCouponNumber 
	 * @Description: 获取即将过期优惠券
	 * @param userId 用户Id
	 * @author YHQ 
	 * @since V2.6.3
	 * @return ExpiredCouponDTO 过期优惠券DTO
	 * 
	 */
	public ExpiredCouponDTO getExpiredCouponNumber(String userId);
	
}
